<?php

namespace app\server\model;

use variant\provider\Register;

class Config
{

    /**
     * 加载配置文件
     *
     * @param string $file
     * @return array
     */
    private static function load(string $file = 'config')
    {
        $filePath = APP_PATH . $file . '.php';
        if (file_exists($filePath)) {
            // 加载配置文件并加入注册树
            if (!Register::has($file)) {
                Register::set($file, include_once $filePath);
            }
            return Register::get($file);
        }
        return [];
    }

    /**
     * 获取配置文件
     *
     * @param string $key
     * @param string $fileName
     * @return array|mixed|null
     * @example 支持多维数组 Config::get('db.host') | Config::get('reboot', 'command')
     */
    public static function get(string $key, string $fileName = 'config')
    {
        $config = self::load($fileName);
        $keys = array_filter(explode('.', $key));
        foreach ($keys as $k => $v) {
            $config = $config[$v] ?? null;
        }
        return $config;
    }

}